package queue;

/**
 * queue
 *
 * @description:
 * @author: yechen
 * @email: wangqingfeng@wxyundian.com
 * @date: 2019年11月04日 15:17
 */
public class TestQueue {
    private int[] array;
    private int front;
    private int rear;

    public TestQueue(int capacity) {
        this.array = new int[capacity];
    }

    /***
     * 入队
     *
     * @param element
     * @throws Exception
     */
    public void enQueue(int element) throws Exception {
        if ((rear + 1) % array.length == front) {
            throw new Exception("队列已满");
        }
        array[rear] = element;
        rear = (rear + 1) % array.length;
    }

    /***
     * 出队
     *
     * @return
     * @throws Exception
     */
    public int deQueue() throws Exception {
        if (rear == front) {
            throw new Exception("队列已空");
        }
        int deQueueElement = array[front];
        front = (front + 1) % array.length;
        return deQueueElement;
    }

    /***
     * 输出队列
     */
    public void output() {
        for (int i = front; i != rear; i = (i + 1) % array.length) {
            System.out.println(array[i]);
        }
    }

    public static void main(String[] args) throws Exception {
        TestQueue testQueue = new TestQueue(6);
        testQueue.enQueue(3);
        testQueue.enQueue(5);
        testQueue.enQueue(6);
        testQueue.enQueue(8);
        testQueue.enQueue(1);
        testQueue.deQueue();
        testQueue.deQueue();
        testQueue.deQueue();
        testQueue.enQueue(2);
        testQueue.enQueue(4);
        testQueue.enQueue(9);
        testQueue.output();
    }
}
